#------------- User Settings -------------

visible E87TS = 1 #set to 1 if E87 includes Terminal S. Set to 0 if not. 
visible E87TT = 1 #set to 1 if E87 includes Terminal T. Set to 0 if not.
visible E87TU = 0 #set to 1 if E87 includes Terminal U. Set to 0 if not.
visible E87TW = 0 #set to 1 if E87 includes Terminal W. Set to 0 if not.
visible E87TX = 0 #set to 1 if E87 includes Terminal X. Set to 0 if not.

visible TSCTC = 0 #define compensation matrix setting for Terminal S
visible TTCTC = 1 #define compensation matrix setting for Terminal T
visible TUCTC = 0 #define compensation matrix setting for Terminal U
visible TWCTC = 0 #define compensation matrix setting for Terminal W
visible TXCTC = 0 #define compensation matrix setting for Terminal X

visible CTRS = 100 #define CT ratio for Terminal S
visible CTRT = 100 #define CT ratio for Terminal T
visible CTRU = 100 #define CT ratio for Terminal U
visible CTRW = 100 #define CT ratio for Terminal W
visible CTRX = 100 #define CT ratio for Terminal X

visible TAPS = 1.00 #define TAP setting for Terminal S
visible TAPT = 1.00 #define TAP setting for Terminal T
visible TAPU = 1.00 #define TAP setting for Terminal U
visible TAPW = 1.00 #define TAP setting for Terminal W
visible TAPX = 1.00 #define TAP setting for Terminal X

visible CTCONS = 0 #define CT connection for Terminal S, set to 0 for wye or 1 for delta.
visible CTCONT = 0 #define CT connection for Terminal T, set to 0 for wye or 1 for delta.
visible CTCONU = 0 #define CT connection for Terminal U, set to 0 for wye or 1 for delta.
visible CTCONW = 0 #define CT connection for Terminal W, set to 0 for wye or 1 for delta.
visible CTCONX = 0 #define CT connection for Terminal X, set to 0 for wye or 1 for delta.

#------------ Definitions ------------

CT1CONFIG = IF(CTCONS=0, 1, sqrt(3))
CT2CONFIG = IF(CTCONT=0, 1, sqrt(3))
CT3CONFIG = IF(CTCONU=0, 1, sqrt(3))
CT4CONFIG = IF(CTCONW=0, 1, sqrt(3))
CT5CONFIG = IF(CTCONX=0, 1, sqrt(3))

IASCalc.phasor = IAS.phasor*CT1CONFIG
IBSCalc.phasor = IBS.phasor*CT1CONFIG 
ICSCalc.phasor = ICS.phasor*CT1CONFIG
IATCalc.phasor = IAT.phasor*CT2CONFIG 
IBTCalc.phasor = IBT.phasor*CT2CONFIG 
ICTCalc.phasor = ICT.phasor*CT2CONFIG
IAUCalc.phasor = IAU.phasor*CT3CONFIG
IBUCalc.phasor = IBU.phasor*CT3CONFIG 
ICUCalc.phasor = ICU.phasor*CT3CONFIG 
IAWCalc.phasor = IAW.phasor*CT4CONFIG  
IBWCalc.phasor = IBW.phasor*CT4CONFIG 
ICWCalc.phasor = ICW.phasor*CT4CONFIG
IAXCalc.phasor = IAX.phasor*CT5CONFIG  
IBXCalc.phasor = IBX.phasor*CT5CONFIG 
ICXCalc.phasor = ICX.phasor*CT5CONFIG

mw1=TSCTC
mw2=TTCTC
mw3=TUCTC
mw4=TWCTC
mw5=TXCTC

#WINDING S

scaleS = (mw1=0)*1 + ((mw1=1)+(mw1=3)+(mw1=5)+(mw1=7)+(mw1=9)+(mw1=11))*(1/sqrt(3)) + ((mw1=2)+(mw1=4)+(mw1=6)+(mw1=8)+(mw1=10)+(mw1=12))*(1/3)

I1WS_coeff1 = ((-2)*(mw1=6)) + ((-1)*((mw1=4)+(mw1=5)+(mw1=7)+(mw1=8))) + ((1)*((mw1=0)+(mw1=1)+(mw1=2)+(mw1=10)+(mw1=11))) + ((2)*(mw1=12))
I1WS_coeff2 = ((-2)*(mw1=2)) + ((-1)*((mw1=1)+(mw1=3)+(mw1=4)+(mw1=12))) + ((1)*((mw1=6)+(mw1=7)+(mw1=9)+(mw1=10))) + ((2)*(mw1=8))
I1WS_coeff3 = ((-2)*(mw1=10)) + ((-1)*((mw1=8)+(mw1=9)+(mw1=11)+(mw1=12))) + ((1)*((mw1=2)+(mw1=3)+(mw1=5)+(mw1=6))) + ((2)*(mw1=4))
I1WSC = scaleS*(I1WS_coeff1*IASCalc.phasor+I1WS_coeff2*IBSCalc.phasor+I1WS_coeff3*ICSCalc.phasor)*(1/(TAPS))/CTRS 

I2WS_coeff1 = ((-2)*(mw1=10)) + ((-1)*((mw1=8)+(mw1=9)+(mw1=11)+(mw1=12))) + ((1)*((mw1=2)+(mw1=3)+(mw1=5)+(mw1=6))) + ((2)*(mw1=4))
I2WS_coeff2 = ((-2)*(mw1=6)) + ((-1)*((mw1=4)+(mw1=5)+(mw1=7)+(mw1=8))) + ((1)*((mw1=0)+(mw1=1)+(mw1=2)+(mw1=10)+(mw1=11))) + ((2)*(mw1=12))
I2WS_coeff3 = ((-2)*(mw1=2)) + ((-1)*((mw1=1)+(mw1=3)+(mw1=4)+(mw1=12))) + ((1)*((mw1=6)+(mw1=7)+(mw1=9)+(mw1=10))) + ((2)*(mw1=8))
I2WSC = scaleS*(I2WS_coeff1*IASCalc.phasor+I2WS_coeff2*IBSCalc.phasor+I2WS_coeff3*ICSCalc.phasor)*(1/(TAPS))/CTRS 

I3WS_coeff1 = ((-2)*(mw1=2)) + ((-1)*((mw1=1)+(mw1=3)+(mw1=4)+(mw1=12))) + ((1)*((mw1=6)+(mw1=7)+(mw1=9)+(mw1=10))) + ((2)*(mw1=8))
I3WS_coeff2 = ((-2)*(mw1=10)) + ((-1)*((mw1=8)+(mw1=9)+(mw1=11)+(mw1=12))) + ((1)*((mw1=2)+(mw1=3)+(mw1=5)+(mw1=6))) + ((2)*(mw1=4))
I3WS_coeff3 = ((-2)*(mw1=6)) + ((-1)*((mw1=4)+(mw1=5)+(mw1=7)+(mw1=8))) + ((1)*((mw1=0)+(mw1=1)+(mw1=2)+(mw1=10)+(mw1=11))) + ((2)*(mw1=12))
I3WSC = scaleS*(I3WS_coeff1*IASCalc.phasor+I3WS_coeff2*IBSCalc.phasor+I3WS_coeff3*ICSCalc.phasor)*(1/(TAPS))/CTRS 

#WINDING T

scaleT = (mw2=0)*1 + ((mw2=1)+(mw2=3)+(mw2=5)+(mw2=7)+(mw2=9)+(mw2=11))*(1/sqrt(3)) + ((mw2=2)+(mw2=4)+(mw2=6)+(mw2=8)+(mw2=10)+(mw2=12))*(1/3)

I1WT_coeff1 = ((-2)*(mw2=6)) + ((-1)*((mw2=4)+(mw2=5)+(mw2=7)+(mw2=8))) + ((1)*((mw2=0)+(mw2=1)+(mw2=2)+(mw2=10)+(mw2=11))) + ((2)*(mw2=12))
I1WT_coeff2 = ((-2)*(mw2=2)) + ((-1)*((mw2=1)+(mw2=3)+(mw2=4)+(mw2=12))) + ((1)*((mw2=6)+(mw2=7)+(mw2=9)+(mw2=10))) + ((2)*(mw2=8))
I1WT_coeff3 = ((-2)*(mw2=10)) + ((-1)*((mw2=8)+(mw2=9)+(mw2=11)+(mw2=12))) + ((1)*((mw2=2)+(mw2=3)+(mw2=5)+(mw2=6))) + ((2)*(mw2=4))
I1WTC = scaleT*(I1WT_coeff1*IATCalc.phasor+I1WT_coeff2*IBTCalc.phasor+I1WT_coeff3*ICTCalc.phasor)*(1/(TAPT))/CTRT 

I2WT_coeff1 = ((-2)*(mw2=10)) + ((-1)*((mw2=8)+(mw2=9)+(mw2=11)+(mw2=12))) + ((1)*((mw2=2)+(mw2=3)+(mw2=5)+(mw2=6))) + ((2)*(mw2=4))
I2WT_coeff2 = ((-2)*(mw2=6)) + ((-1)*((mw2=4)+(mw2=5)+(mw2=7)+(mw2=8))) + ((1)*((mw2=0)+(mw2=1)+(mw2=2)+(mw2=10)+(mw2=11))) + ((2)*(mw2=12))
I2WT_coeff3 = ((-2)*(mw2=2)) + ((-1)*((mw2=1)+(mw2=3)+(mw2=4)+(mw2=12))) + ((1)*((mw2=6)+(mw2=7)+(mw2=9)+(mw2=10))) + ((2)*(mw2=8))
I2WTC = scaleT*(I2WT_coeff1*IATCalc.phasor+I2WT_coeff2*IBTCalc.phasor+I2WT_coeff3*ICTCalc.phasor)*(1/(TAPT))/CTRT 

I3WT_coeff1 = ((-2)*(mw2=2)) + ((-1)*((mw2=1)+(mw2=3)+(mw2=4)+(mw2=12))) + ((1)*((mw2=6)+(mw2=7)+(mw2=9)+(mw2=10))) + ((2)*(mw2=8))
I3WT_coeff2 = ((-2)*(mw2=10)) + ((-1)*((mw2=8)+(mw2=9)+(mw2=11)+(mw2=12))) + ((1)*((mw2=2)+(mw2=3)+(mw2=5)+(mw2=6))) + ((2)*(mw2=4))
I3WT_coeff3 = ((-2)*(mw2=6)) + ((-1)*((mw2=4)+(mw2=5)+(mw2=7)+(mw2=8))) + ((1)*((mw2=0)+(mw2=1)+(mw2=2)+(mw2=10)+(mw2=11))) + ((2)*(mw2=12))
I3WTC = scaleT*(I3WT_coeff1*IATCalc.phasor+I3WT_coeff2*IBTCalc.phasor+I3WT_coeff3*ICTCalc.phasor)*(1/(TAPT))/CTRT 

#WINDING U

scaleU = (mw3=0)*1 + ((mw3=1)+(mw3=3)+(mw3=5)+(mw3=7)+(mw3=9)+(mw3=11))*(1/sqrt(3)) + ((mw3=2)+(mw3=4)+(mw3=6)+(mw3=8)+(mw3=10)+(mw3=12))*(1/3)

I1WU_coeff1 = ((-2)*(mw3=6)) + ((-1)*((mw3=4)+(mw3=5)+(mw3=7)+(mw3=8))) + ((1)*((mw3=0)+(mw3=1)+(mw3=2)+(mw3=10)+(mw3=11))) + ((2)*(mw3=12))
I1WU_coeff2 = ((-2)*(mw3=2)) + ((-1)*((mw3=1)+(mw3=3)+(mw3=4)+(mw3=12))) + ((1)*((mw3=6)+(mw3=7)+(mw3=9)+(mw3=10))) + ((2)*(mw3=8))
I1WU_coeff3 = ((-2)*(mw3=10)) + ((-1)*((mw3=8)+(mw3=9)+(mw3=11)+(mw3=12))) + ((1)*((mw3=2)+(mw3=3)+(mw3=5)+(mw3=6))) + ((2)*(mw3=4))
I1WUC = scaleU*(I1WU_coeff1*IAUCalc.phasor+I1WU_coeff2*IBUCalc.phasor+I1WU_coeff3*ICUCalc.phasor)*(1/(TAPU))/CTRU 

I2WU_coeff1 = ((-2)*(mw3=10)) + ((-1)*((mw3=8)+(mw3=9)+(mw3=11)+(mw3=12))) + ((1)*((mw3=2)+(mw3=3)+(mw3=5)+(mw3=6))) + ((2)*(mw3=4))
I2WU_coeff2 = ((-2)*(mw3=6)) + ((-1)*((mw3=4)+(mw3=5)+(mw3=7)+(mw3=8))) + ((1)*((mw3=0)+(mw3=1)+(mw3=2)+(mw3=10)+(mw3=11))) + ((2)*(mw3=12))
I2WU_coeff3 = ((-2)*(mw3=2)) + ((-1)*((mw3=1)+(mw3=3)+(mw3=4)+(mw3=12))) + ((1)*((mw3=6)+(mw3=7)+(mw3=9)+(mw3=10))) + ((2)*(mw3=8))
I2WUC = scaleU*(I2WU_coeff1*IAUCalc.phasor+I2WU_coeff2*IBUCalc.phasor+I2WU_coeff3*ICUCalc.phasor)*(1/(TAPU))/CTRU 

I3WU_coeff1 = ((-2)*(mw3=2)) + ((-1)*((mw3=1)+(mw3=3)+(mw3=4)+(mw3=12))) + ((1)*((mw3=6)+(mw3=7)+(mw3=9)+(mw3=10))) + ((2)*(mw3=8))
I3WU_coeff2 = ((-2)*(mw3=10)) + ((-1)*((mw3=8)+(mw3=9)+(mw3=11)+(mw3=12))) + ((1)*((mw3=2)+(mw3=3)+(mw3=5)+(mw3=6))) + ((2)*(mw3=4))
I3WU_coeff3 = ((-2)*(mw3=6)) + ((-1)*((mw3=4)+(mw3=5)+(mw3=7)+(mw3=8))) + ((1)*((mw3=0)+(mw3=1)+(mw3=2)+(mw3=10)+(mw3=11))) + ((2)*(mw3=12))
I3WUC = scaleU*(I3WU_coeff1*IAUCalc.phasor+I3WU_coeff2*IBUCalc.phasor+I3WU_coeff3*ICUCalc.phasor)*(1/(TAPU))/CTRU 

#WINDING W

scaleW = (mw4=0)*1 + ((mw4=1)+(mw4=3)+(mw4=5)+(mw4=7)+(mw4=9)+(mw4=11))*(1/sqrt(3)) + ((mw4=2)+(mw4=4)+(mw4=6)+(mw4=8)+(mw4=10)+(mw4=12))*(1/3)

I1WW_coeff1 = ((-2)*(mw4=6)) + ((-1)*((mw4=4)+(mw4=5)+(mw4=7)+(mw4=8))) + ((1)*((mw4=0)+(mw4=1)+(mw4=2)+(mw4=10)+(mw4=11))) + ((2)*(mw4=12))
I1WW_coeff2 = ((-2)*(mw4=2)) + ((-1)*((mw4=1)+(mw4=3)+(mw4=4)+(mw4=12))) + ((1)*((mw4=6)+(mw4=7)+(mw4=9)+(mw4=10))) + ((2)*(mw4=8))
I1WW_coeff3 = ((-2)*(mw4=10)) + ((-1)*((mw4=8)+(mw4=9)+(mw4=11)+(mw4=12))) + ((1)*((mw4=2)+(mw4=3)+(mw4=5)+(mw4=6))) + ((2)*(mw4=4))
I1WWC = scaleW*(I1WW_coeff1*IAWCalc.phasor+I1WW_coeff2*IBWCalc.phasor+I1WW_coeff3*ICWCalc.phasor)*(1/(TAPW))/CTRW 

I2WW_coeff1 = ((-2)*(mw4=10)) + ((-1)*((mw4=8)+(mw4=9)+(mw4=11)+(mw4=12))) + ((1)*((mw4=2)+(mw4=3)+(mw4=5)+(mw4=6))) + ((2)*(mw4=4))
I2WW_coeff2 = ((-2)*(mw4=6)) + ((-1)*((mw4=4)+(mw4=5)+(mw4=7)+(mw4=8))) + ((1)*((mw4=0)+(mw4=1)+(mw4=2)+(mw4=10)+(mw4=11))) + ((2)*(mw4=12))
I2WW_coeff3 = ((-2)*(mw4=2)) + ((-1)*((mw4=1)+(mw4=3)+(mw4=4)+(mw4=12))) + ((1)*((mw4=6)+(mw4=7)+(mw4=9)+(mw4=10))) + ((2)*(mw4=8))
I2WWC = scaleW*(I2WW_coeff1*IAWCalc.phasor+I2WW_coeff2*IBWCalc.phasor+I2WW_coeff3*ICWCalc.phasor)*(1/(TAPW))/CTRW 

I3WW_coeff1 = ((-2)*(mw4=2)) + ((-1)*((mw4=1)+(mw4=3)+(mw4=4)+(mw4=12))) + ((1)*((mw4=6)+(mw4=7)+(mw4=9)+(mw4=10))) + ((2)*(mw4=8))
I3WW_coeff2 = ((-2)*(mw4=10)) + ((-1)*((mw4=8)+(mw4=9)+(mw4=11)+(mw4=12))) + ((1)*((mw4=2)+(mw4=3)+(mw4=5)+(mw4=6))) + ((2)*(mw4=4))
I3WW_coeff3 = ((-2)*(mw4=6)) + ((-1)*((mw4=4)+(mw4=5)+(mw4=7)+(mw4=8))) + ((1)*((mw4=0)+(mw4=1)+(mw4=2)+(mw4=10)+(mw4=11))) + ((2)*(mw4=12))
I3WWC = scaleW*(I3WW_coeff1*IAWCalc.phasor+I3WW_coeff2*IBWCalc.phasor+I3WW_coeff3*ICWCalc.phasor)*(1/(TAPW))/CTRW 

#WINDING X

scaleX = (mw5=0)*1 + ((mw5=1)+(mw5=3)+(mw5=5)+(mw5=7)+(mw5=9)+(mw5=11))*(1/sqrt(3)) + ((mw5=2)+(mw5=4)+(mw5=6)+(mw5=8)+(mw5=10)+(mw5=12))*(1/3)

I1WX_coeff1 = ((-2)*(mw5=6)) + ((-1)*((mw5=4)+(mw5=5)+(mw5=7)+(mw5=8))) + ((1)*((mw5=0)+(mw5=1)+(mw5=2)+(mw5=10)+(mw5=11))) + ((2)*(mw5=12))
I1WX_coeff2 = ((-2)*(mw5=2)) + ((-1)*((mw5=1)+(mw5=3)+(mw5=4)+(mw5=12))) + ((1)*((mw5=6)+(mw5=7)+(mw5=9)+(mw5=10))) + ((2)*(mw5=8))
I1WX_coeff3 = ((-2)*(mw5=10)) + ((-1)*((mw5=8)+(mw5=9)+(mw5=11)+(mw5=12))) + ((1)*((mw5=2)+(mw5=3)+(mw5=5)+(mw5=6))) + ((2)*(mw5=4))
I1WXC = scaleX*(I1WX_coeff1*IAXCalc.phasor+I1WX_coeff2*IBXCalc.phasor+I1WX_coeff3*ICXCalc.phasor)*(1/(TAPX))/CTRX 

I2WX_coeff1 = ((-2)*(mw5=10)) + ((-1)*((mw5=8)+(mw5=9)+(mw5=11)+(mw5=12))) + ((1)*((mw5=2)+(mw5=3)+(mw5=5)+(mw5=6))) + ((2)*(mw5=4))
I2WX_coeff2 = ((-2)*(mw5=6)) + ((-1)*((mw5=4)+(mw5=5)+(mw5=7)+(mw5=8))) + ((1)*((mw5=0)+(mw5=1)+(mw5=2)+(mw5=10)+(mw5=11))) + ((2)*(mw5=12))
I2WX_coeff3 = ((-2)*(mw5=2)) + ((-1)*((mw5=1)+(mw5=3)+(mw5=4)+(mw5=12))) + ((1)*((mw5=6)+(mw5=7)+(mw5=9)+(mw5=10))) + ((2)*(mw5=8))
I2WXC = scaleX*(I2WX_coeff1*IAXCalc.phasor+I2WX_coeff2*IBXCalc.phasor+I2WX_coeff3*ICXCalc.phasor)*(1/(TAPX))/CTRX 

I3WX_coeff1 = ((-2)*(mw5=2)) + ((-1)*((mw5=1)+(mw5=3)+(mw5=4)+(mw5=12))) + ((1)*((mw5=6)+(mw5=7)+(mw5=9)+(mw5=10))) + ((2)*(mw5=8))
I3WX_coeff2 = ((-2)*(mw5=10)) + ((-1)*((mw5=8)+(mw5=9)+(mw5=11)+(mw5=12))) + ((1)*((mw5=2)+(mw5=3)+(mw5=5)+(mw5=6))) + ((2)*(mw5=4))
I3WX_coeff3 = ((-2)*(mw5=6)) + ((-1)*((mw5=4)+(mw5=5)+(mw5=7)+(mw5=8))) + ((1)*((mw5=0)+(mw5=1)+(mw5=2)+(mw5=10)+(mw5=11))) + ((2)*(mw5=12))
I3WXC = scaleX*(I3WX_coeff1*IAXCalc.phasor+I3WX_coeff2*IBXCalc.phasor+I3WX_coeff3*ICXCalc.phasor)*(1/(TAPX))/CTRX 



IRT1Calc = (mag(I1WSC)*E87TS+mag(I1WTC)*E87TT+mag(I1WUC)*E87TU+mag(I1WWC)*E87TW+mag(I1WXC)*E87TX)
IRT2Calc = (mag(I2WSC)*E87TS+mag(I2WTC)*E87TT+mag(I2WUC)*E87TU+mag(I2WWC)*E87TW+mag(I2WXC)*E87TX)
IRT3Calc = (mag(I3WSC)*E87TS+mag(I3WTC)*E87TT+mag(I3WUC)*E87TU+mag(I3WWC)*E87TW+mag(I3WXC)*E87TX)
IOP1Calc = mag(I1WSC*E87TS+I1WTC*E87TT+I1WUC*E87TU+I1WWC*E87TW+I1WXC*E87TX)
IOP2Calc = mag(I2WSC*E87TS+I2WTC*E87TT+I2WUC*E87TU+I2WWC*E87TW+I2WXC*E87TX)
IOP3Calc = mag(I3WSC*E87TS+I3WTC*E87TT+I3WUC*E87TU+I3WWC*E87TW+I3WXC*E87TX)